<?php
namespace SisGG\FinalBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraint as Assert;
use SisGG\FinalBundle\Entity\PedidoDelivery;
use SisGG\FinalBundle\Entity\PedidoMesa;
use SisGG\FinalBundle\Entity\PedidoMostrador;
/**
 * @ORM\Entity
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="discr", type="string")
 * @ORM\DiscriminatorMap({"pedido" = "Pedido", "pedidodelivery" = "PedidoDelivery", "pedidomesa" = "PedidoMesa", "pedidomostrador" = "PedidoMostrador"})
 */
class Pedido implements \Serializable
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORM\Column(type="decimal", precision=2, scale=1)
     */
    private $precio;
    
    /**
     * @ORM\ManyToMany(targetEntity="ItemPedido")
     * @ORM\JoinTable(name="itempedido_pedido",
     *      joinColumns={@ORM\JoinColumn(name="itempedido_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="pedido_id", referencedColumnName="id")}
     *      )
     */
    private $itemPedido;

    /**
     * @return boolean
     */
    public function isMostrador(){
        return false;
    }
    /**
     * @return boolean
     */
    public function isDelivery(){
        return false;
    }
    /**
     * @return boolean
     */
    public function isMesa(){
        return false;
    }
    /**
     * @return string
     */
    public function serialize()
    {
      return serialize($this->id);
    }

    /**
     * @param string $data
     */
    public function unserialize($data)
    {
      $this->id = unserialize($data);
    }


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set precio
     *
     * @param float $precio
     * @return Pedido
     */
    public function setPrecio($precio)
    {
        $this->precio = $precio;
    
        return $this;
    }

    /**
     * Get precio
     *
     * @return float 
     */
    public function getPrecio()
    {
        return $this->precio;
    }

    /**
     * Set itemPedido
     *
     * @param SisGG\FinalBundle\Entity\ItemPedido $itemPedido
     * @return Pedido
     */
    public function setItemPedido(\SisGG\FinalBundle\Entity\ItemPedido $itemPedido = null)
    {
        $this->itemPedido = $itemPedido;
    
        return $this;
    }

    /**
     * Get itemPedido
     *
     * @return SisGG\FinalBundle\Entity\ItemPedido 
     */
    public function getItemPedido()
    {
        return $this->itemPedido;
    }
    /**
     * Constructor
     */
    public function __construct()
    {
        $this->itemPedido = new \Doctrine\Common\Collections\ArrayCollection();
    }
    
    /**
     * Add itemPedido
     *
     * @param SisGG\FinalBundle\Entity\ItemPedido $itemPedido
     * @return Pedido
     */
    public function addItemPedido(\SisGG\FinalBundle\Entity\ItemPedido $itemPedido)
    {
        $this->itemPedido[] = $itemPedido;
    
        return $this;
    }

    /**
     * Remove itemPedido
     *
     * @param SisGG\FinalBundle\Entity\ItemPedido $itemPedido
     */
    public function removeItemPedido(\SisGG\FinalBundle\Entity\ItemPedido $itemPedido)
    {
        $this->itemPedido->removeElement($itemPedido);
    }
}